// 主游戏控制文件
let tetris = null;
let tetrisAI = null;
let gameInterval = null;
let lastTime = 0;

// 页面加载完成后初始化游戏
window.addEventListener('load', () => {
    // 创建游戏实例
    tetris = new Tetris();
    
    // 创建AI实例
    tetrisAI = new TetrisAI(tetris);
    
    // 设置按钮事件监听
    setupButtonListeners();
    
    // 设置键盘控制
    setupKeyboardControls();
    
    // 开始游戏循环
    startGameLoop();
});

// 设置按钮事件监听
function setupButtonListeners() {
    // 开始游戏按钮
    document.getElementById('startBtn').addEventListener('click', () => {
        if (tetris.gameOver) {
            tetris.resetGame();
        } else if (tetris.paused) {
            tetris.paused = false;
            tetris.gameMessage.classList.remove('show');
        }
    });
    
    // 暂停按钮
    document.getElementById('pauseBtn').addEventListener('click', () => {
        if (!tetris.gameOver) {
            tetris.paused = !tetris.paused;
            if (tetris.paused) {
                tetris.showMessage('游戏暂停');
            } else {
                tetris.gameMessage.classList.remove('show');
            }
        }
    });
    
    // AI自动玩按钮
    document.getElementById('aiBtn').addEventListener('click', () => {
        tetrisAI.toggleAI();
    });
    
    // 重置按钮
    document.getElementById('resetBtn').addEventListener('click', () => {
        tetris.resetGame();
        tetrisAI.disableAI();
    });
}

// 设置键盘控制
function setupKeyboardControls() {
    document.addEventListener('keydown', (e) => {
        // 如果AI正在运行且游戏没有暂停，则忽略用户输入
        if (tetrisAI.aiEnabled && !tetris.paused) {
            return;
        }
        
        // 如果游戏结束，忽略用户输入
        if (tetris.gameOver) {
            return;
        }
        
        // 如果游戏暂停，只允许继续游戏的操作
        if (tetris.paused) {
            // 按空格键继续游戏
            if (e.code === 'Space') {
                tetris.paused = false;
                tetris.gameMessage.classList.remove('show');
            }
            return;
        }
        
        // 根据按键执行相应操作
        switch (e.code) {
            case 'ArrowLeft':
                tetris.movePieceLeft();
                break;
            case 'ArrowRight':
                tetris.movePieceRight();
                break;
            case 'ArrowDown':
                tetris.movePieceDown();
                break;
            case 'ArrowUp':
                tetris.rotatePiece();
                tetris.drawBoard();
                break;
            case 'Space':
                tetris.hardDrop();
                break;
            case 'KeyP':
                tetris.paused = true;
                tetris.showMessage('游戏暂停');
                break;
            case 'KeyR':
                tetris.resetGame();
                tetrisAI.disableAI();
                break;
            case 'KeyA':
                tetrisAI.toggleAI();
                break;
        }
    });
}

// 开始游戏循环
function startGameLoop() {
    lastTime = performance.now();
    
    function gameLoop(timestamp) {
        const deltaTime = timestamp - lastTime;
        
        // 基于当前等级计算下落速度
        const dropSpeed = Math.max(50, 1000 - (tetris.level - 1) * 100); // 等级越高，下落越快
        
        // 控制方块自动下落
        if (deltaTime >= dropSpeed && !tetris.paused && !tetris.gameOver) {
            tetris.gameLoop();
            lastTime = timestamp;
        }
        
        // 继续游戏循环
        requestAnimationFrame(gameLoop);
    }
    
    // 启动游戏循环
    requestAnimationFrame(gameLoop);
}

// 窗口大小变化时重新绘制游戏（可选功能）
window.addEventListener('resize', () => {
    if (tetris) {
        tetris.drawBoard();
        tetris.drawNextPiece();
    }
});